/*
 * @Project Bluezone
 * @Author Bluezone Global (contact@bluezone.ai)
 * @Createdate 04/26/2020, 16:36
 *
 * This file is part of Bluezone (https://bluezone.ai)
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */

'use strict';

import {
  BluetoothStatus,
  useBluetoothStatus as _useBluetoothStatus,
} from 'react-native-bluetooth-status';

const events = [];

const registerBluetoothStateListener = fn => {
  for (let i = 0; i < events.length; i++) {
    if (events[i] === fn) {
      return;
    }
  }
  events.push(fn);
};

const broadcastBluetoothStateListener = status => {
  for (let i = 0; i < events.length; i++) {
    events[i](status);
  }
};

const getBluetoothState = () => {
  return BluetoothStatus.state();
};

const enableBluetooth = () => {
  BluetoothStatus.enable();
};

const disableBluetooth = () => {
  return BluetoothStatus.disable();
};

const useBluetoothStatus = () => {
  return _useBluetoothStatus();
};

BluetoothStatus.addListener(broadcastBluetoothStateListener);

export {
  registerBluetoothStateListener,
  getBluetoothState,
  enableBluetooth,
  disableBluetooth,
  useBluetoothStatus,
};
